#pragma once 

#include "timestamp.h"
#include <memory>
#include <functional>

class Buffer;
class TcpConnection;

using TcpConnectionPtr = std::shared_ptr<TcpConnection>;
using ConnectionCallBack = std::function<void(const TcpConnectionPtr&)>;
using CloseCallBack = std::function<void(const TcpConnectionPtr&)>;
using WriteCompleteCallBack = std::function<void(const TcpConnectionPtr&)>;
using MessageCallBack = std::function<void(const TcpConnectionPtr&,
                                                Buffer*, TimeStamp)>;


using HighWaterMarkCallBack = std::function<void(const TcpConnectionPtr&,
                                                size_t)>;